- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин
Шрифт:
Интервал:
Закладка:
FXML-описание графического интерфейса JavaFX-приложения имеет структуру XML-документа, однако не имеет конкретной XML-схемы.
Для использования специфических XML-элементов пространства имен языка FXML, в FXML-описание должно быть включено объявление пространства имен xmlns: fx.
Экземпляр JavaFX-компонента создается в FXML-описании с помощью тэга импорта и тэга, начинающегося с имени класса JavaFX-компонента.
FXML-описание позволяет создавать не только экземпляры JavaFX-компонентов, но и другие Java-объекты.
Экземпляр хэш-таблицы java. util. HashMap создается с помощью соответствующего тэга.
Экземпляр Java-класса, имеющего статический метод valueOf создается, используя атрибут fx: value.
Java-объект, возвращаемый методом класса-фабрики, создается, используя атрибут fx: factory.
Кроме того, для создания экземпляров классов можно переопределить фабрику JavaFXBuilderFactory, используемую по умолчанию для создания JavaFX-объектов.
Для этого при вызове в главном классе JavaFX-приложения статического метода load класса FXMLLoader необходимо в качестве аргумента указать экземпляр пользовательского класса, реализующего интерфейс BuilderFactory.
Интерфейс BuilderFactory имеет единственный метод getBuilder, возвращающий экземпляр класса, который реализует интерфейс Builder.
Поэтому необходимо также создать пользовательский класс, реализующий интерфейс Builder.
Интерфейс Builder имеет единственный метод build, возвращающий Java-объект.
Теперь, другие теги языка FXML, такие как <fx: include> и <fx: reference>.
Тэг <fx: include> языка FXML обеспечивает модульность FXML-описания и указывает своим атрибутом source имя включаемого FXML-файла, содержащего описание создаваемых JavaFX-компонентов.
Тэг <fx: reference> языка FXML своим атрибутом source позволяет сослаться на другой именованный FXML-элемент.
Атрибуты FXML-элементов могут быть нескольких типов.
Атрибут FXML-элемента может описывать свойство JavaFX-компонента.
Как альтернатива FXML-атрибуту, свойство JavaFX-компонента может описывать вложенный тэг FXML-элемента.
Атрибуты FXML-элемента, описывающие JavaFX-свойства, могут использовать различные префиксы.
Здесь тэг <fx: define> языка FXML позволяет создавать объекты, на которые можно ссылаться из любого уровня графа сцены.
Атрибут FXML-элемента может описывать статические свойства класса, при этом атрибут имеет вид:
[имя класса]. [имя свойства] =” [значение]»
Атрибут FXML-элемента также может описывать обработчик событий JavaFX-компонента.
Здесь тэг <fx: script> языка FXML обеспечивает включение в FXML-описание кода JVM-языков, таких как JavaScript, Groovy и другие.
Скриптовый код может быть включен непосредственно в тэг <fx: script>, или может содержаться в отдельном файле, который включается в FXML-описание атрибутом source тэга <fx: script>.
Визуальный графический редактор JavaFX Scene Builder существенно упрощает создание FXML-описания графического интерфейса.
Дистрибутив редактора Scene Builder доступен для скачивания по указанному адресу.
После установки, редактор Scene Builder запускается с помощью файла bin/scenebuilder. exe, который открывает главное окно, состоящее из набора панелей Library, Hierarchy, рабочей области и панелей свойств, компоновки и событий графических компонентов.
С помощью редактора Scene Builder компоненты интерфейса пользователя легко добавляются в сцену путем простого их перетаскивания из панели Library в рабочую область, а панели правой части редактора обеспечивают редактирование свойств, событий и компоновки компонентов.
Графические системы SWT и JFace
Первые реализации Java-платформы содержали графическую библиотеку Abstract Windowing Toolkit (AWT), предоставляющую такие компоненты графического интерфейса пользователя, как кнопку, флажок, список выбора, диалоговые окна, метку, прокручивающийся список, меню, панель с прокруткой, текстовую область и текстовое поле, а также панели компоновки компонентов.
Архитектура графической системы AWT была построена таким образом, что AWT-компоненты имеют своих двойников, реализованных для конкретной операционной системы, с которыми они связаны интерфейсами пакета java.awt.peer.
Поэтому система AWT называется «тяжеловесной» и отображение ее компонентов зависит от операционной системы, в которой она работает.
Для преодоления ограниченности набора и выбора внешнего вида и поведения (Look and Feel) AWT-компонентов была создана библиотека Swing.
Графическая система Swing создана на базе системы AWT и напрямую не связана, как система AWT, с операционной системой, в которой она работает.
Поэтому система Swing называется «легковесной» и в системе Swing стало возможным создать набор отображений Look and Feel, которые разработчик может выбирать, не оглядываясь на операционную систему.
Кроме того, библиотека Swing реализует архитектуру MVC (Model-View-Controller) и дополняет библиотеку AWT такими компонентами интерфейса пользователя, как панель выбора цвета, индикатор состояния, переключатель, слайдер и спиннер, панель с вкладками, таблицы и деревья, расширенными возможностями компоновки компонентов, таймером, возможностью отображения HTML-контента.
Графическая система SWT (Standard Widget Toolkit) была создана в процессе работы над проектом Eclipse и является попыткой взять лучшее из архитектур систем AWT и Swing и предоставить возможность создания быстрых интерфейсов с отображением Look and Feel, как можно более полно соответствующим операционной системе, в которой они работают.
Архитектура системы SWT построена таким образом, что SWT-компоненты представляют собой лишь Java-оболочки графических компонентов конкретной операционной системы.
Для операционной системы, в которой отсутствует реализация какого-либо компонента, система SWT обеспечивает Java-эмуляцию.
Так в системе SWT достигается скорость работы и полное соответствие внешнему виду и поведению операционной системы.
Для создания интерфейса пользователя система SWT предоставляет такие компоненты как кнопки, включая флажки и переключатели, списки, метку, меню, текстовые области, диалоговые окна, индикатор прогресса, панель с прокруткой, слайдер и спиннер, таблицы и деревья, панель с вкладками, панель выбора даты, панели инструментов, встроенный Web-браузер, гиперссылку, а также обеспечивает компоновку SWT-компонентов, встраивание AWT-компонентов, отображение OpenGL-контента, печать, поддержку операций Drag and Drop, 2D-графики, технологии Win32 OLE.
Система JFace создана на основе системы SWT и реализует архитектуру MVC (Model-View-Controller), предоставляя такие компоненты как таблицы, деревья, списки, текстовую область и диалоговые окна, обеспечивая определение пользовательских команд независимо от их представления в интерфейсе пользователя, управление шрифтами и изображениями, помощь пользователю в выборе соответствующего содержания для полей в компонентах, выполнение длительных задач.
Мы рассмотрим создание SWT/JFace приложений с помощью инструментов Eclipse-плагина WindowBuilder.
Плагин WindowBuilder обеспечивает шаблоны кода для создания Java-приложений с интерфейсом пользователя на основе библиотек Swing, SWT/JFace, RCP и XWT, предоставляя визуальный графический редактор и большой набор Wizard-мастеров.
Для установки WindowBuilder-плагина откроем среду Eclipse, в меню Help выберем Install New Software.
В окне мастера Install в поле Work with: выберем Eclipse-релиз и в разделе General Purpose Tools отметим соответствующие флажки.
Нажмем кнопку Next и установим плагины.
После установки WindowBuilder-плагина перезагрузим среду Eclipse и в перспективе Java в меню File выберем команду New | Other | WindowBuilder | SWT Designer | SWT/JFace Java Project и нажмем кнопку Next.
Введем имя проекта и нажмем кнопку Finish.
В результате будет создан Java-проект, в путь которого будут добавлены библиотеки, обеспечивающие использование библиотек SWT и JFace.
В окне Project Explorer нажмем правой кнопкой мышки на узле проекта и в контекстном меню выберем команду New | Other | WindowBuilder | SWT Designer.
Здесь раздел SWT содержит следующие мастера:

